const int LEDPin[]={2,3,4,5,6,7,8,9};//定义输出针脚
int LEDCount = 8;//数码管LED灯数量
const int inputPin = 10;//定义输入针脚
long lastbuttonstate =  LOW;//定义上次开关状态
long lastbuttontime = 0;//定义一个时间
long debouncetime = 50;//定义防抖动时间
long buttonstate ;//定义开关的现在的状态
int times = 0;//定义按开关的次数
const unsigned char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//定义共阳数码管的输出数组
void setup()
{
  //设立串口检测频率方便修改程序
  Serial.begin(9600);
 for(int a=0;a<LEDCount; a++)
{
  pinMode(LEDPin[a],OUTPUT);//循环初始化输出针脚
} 
 pinMode(inputPin,INPUT);//初始化输入针脚
}

void deal(const char value)
{
 for(int i= 0; i<8;i++)
{
 digitalWrite(LEDPin[i],bitRead(value,i));//定义使数码管输出的函数
} 
}
void loop()
{
  if(times == 0)
  {
    deal(num[0]); //初始化数码管状态使其通电后显示为0
  }
  int reading = digitalRead(inputPin);
  Serial.println(times);//检测按键次数数值方便修改程序
  //以下是防抖动并记录有效按键次数的程序 
  if(reading != buttonstate)
  {
    long lastbuttontime = millis();
  }
    if( (millis()-lastbuttontime) > debouncetime)
    {
       if(reading != buttonstate)
      {
         reading = buttonstate;
         times++;
         deal(num[times%10]);//取模运算使我们能够循环往复
         delay(1000);//两次有效按键的延时.
      } 
     }
   
}
